// This example shows how subscribe to large number of items. using System; using System.Threading; using OpcLabs.EasyOpc.DataAccess; using OpcLabs.EasyOpc.DataAccess.OperationModel; namespace DocExamples.DataAccess._EasyDAClient { partial class SubscribeMultipleItems { public static void ManyItems() { // Instantiate the client object. using (var client = new EasyDAClient()) { client.ItemChanged += client_ItemChanged_ManyItems; const int numberOfItems = 1000; Console.WriteLine("Preparing arguments..."); var argumentArray = new DAItemGroupArguments[numberOfItems]; for (int i = 0; i < numberOfItems; i++) { int copy = (i / 100) + 1; int phase = (i % 100) + 1; string itemId = String.Format("Simulation.Incrementing.Copy_{0}.Phase_{1}", copy, phase); argumentArray[i] = new DAItemGroupArguments("", "OPCLabs.KitServer.2", itemId, 50, null); } Console.WriteLine("Subscribing to {0} items...", numberOfItems); client.SubscribeMultipleItems(argumentArray); Console.WriteLine("Processing item changed events for 1 minute..."); Thread.Sleep(60 * 1000); } } // Item changed event handler static void client_ItemChanged_ManyItems(object sender, EasyDAItemChangedEventArgs e) { if (e.Succeeded) Console.WriteLine("{0}: {1}", e.Arguments.ItemDescriptor.ItemId, e.Vtq); else Console.WriteLine("{0} *** Failure: {1}", e.Arguments.ItemDescriptor.ItemId, e.ErrorMessageBrief); } } }
# This example shows how subscribe to large number of items. # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc import time # Import .NET namespaces. from OpcLabs.EasyOpc.DataAccess import * from OpcLabs.EasyOpc.DataAccess.OperationModel import * # Item changed event handler. def itemChanged(sender, e): if e.Succeeded: print(e.Arguments.ItemDescriptor.ItemId, ': ', e.Vtq, sep='') else: print(e.Arguments.ItemDescriptor.ItemId, ' *** Failure: ', e.ErrorMessageBrief, sep='') NUMBER_OF_ITEMS = 1000 # Instantiate the client object. client = EasyDAClient() client.ItemChanged += itemChanged print('Creating array of arguments...') argumentArray = [None]*NUMBER_OF_ITEMS for i in range(NUMBER_OF_ITEMS): copy = (i//100) + 1 phase = i % 100 itemId = 'Simulation.Incrementing.Copy_{}.Phase_{}'.format(copy, phase) print(itemId) # itemGroupArguments = DAItemGroupArguments('', 'OPCLabs.KitServer.2', itemId, 50, None) argumentArray[i] = itemGroupArguments print('Subscribing to changes of ', NUMBER_OF_ITEMS, ' items...') IEasyDAClientExtension.SubscribeMultipleItems(client, argumentArray) print('Processing item change notifications for 1 minute...') time.sleep(60) print('Unsubscribing all items...') client.UnsubscribeAllItems() client.ItemChanged -= itemChanged print('Finished.')
' This example shows how subscribe to large number of items. Imports System.Threading Imports OpcLabs.EasyOpc.DataAccess Imports OpcLabs.EasyOpc.DataAccess.OperationModel Namespace DataAccess._EasyDAClient Partial Friend Class SubscribeMultipleItems Public Shared Sub ManyItems() Using client = New EasyDAClient() AddHandler client.ItemChanged, AddressOf client_ItemChanged_ManyItems Const numberOfItems As Integer = 1000 Console.WriteLine("Preparing arguments...") Dim argumentArray = New DAItemGroupArguments(numberOfItems - 1) {} For i As Integer = 0 To numberOfItems - 1 Dim copy As Integer = (i \ 100) + 1 Dim phase As Integer = (i Mod 100) + 1 Dim itemId As String = String.Format("Simulation.Incrementing.Copy_{0}.Phase_{1}", copy, phase) argumentArray(i) = New DAItemGroupArguments("", "OPCLabs.KitServer.2", itemId, 50, Nothing) Next i Console.WriteLine("Subscribing to {0} items...", numberOfItems) client.SubscribeMultipleItems(argumentArray) Console.WriteLine("Processing item changed events for 1 minute...") Thread.Sleep(60 * 1000) End Using End Sub ' Item changed event handler Private Shared Sub client_ItemChanged_ManyItems(ByVal sender As Object, ByVal e As EasyDAItemChangedEventArgs) ' Display the data If e.Succeeded Then Console.WriteLine("{0}: {1}", e.Arguments.ItemDescriptor.ItemId, e.Vtq) Else Console.WriteLine("{0} *** Failure: {1}", e.Arguments.ItemDescriptor.ItemId, e.ErrorMessageBrief) End If End Sub End Class End Namespace
Copyright © 2004-2023 CODE Consulting and Development, s.r.o., Plzen. All rights reserved. Web page: www.opclabs.com
Send Documentation Feedback. Resources: Knowledge Base. Technical support: Online Forums, FAQ.